#include <iostream>

static const int defaultcount = -1;

/*饿汉模式*/
// class Singletion
// {
// private:
//     Singletion()
//         : _count(defaultcount)
//     {
//         std::cout << "单例对象构造" << std::endl;
//     }

//     Singletion(const Singletion &) = default;

//     ~Singletion()
//     {
//     }

// public:
//     static Singletion &getInstance()
//     {
//         return _eton;
//     }

//     int GetCount()
//     {
//         return _count;
//     }

//     void SetCount(int x)
//     {
//         _count = x;
//     }

// private:
//     int _count;
//     static Singletion _eton;
// };

/*懒汉模式*/

class Singletion
{
private:
    Singletion()
        : _count(defaultcount)
    {
        std::cout << "单例对象构造" << std::endl;
    }

    Singletion(const Singletion&) = default;


public:
    static Singletion &getInstance()
    {
        static Singletion _eton;
        return _eton;
    }

    void SetCount(int x)
    {
        _count = x;
    }

    int GetCount()
    {
        return _count;
    }

    ~Singletion()
    {

    }
private:
    static Singletion _eton;
    int _count;
};



//Singletion Singletion::_eton;

int main()
{
    Singletion::getInstance().SetCount(100);
    std::cout << Singletion::getInstance().GetCount() << std::endl;
    return 0;
}